In recent years, worldwide use of computing devices has increased dramatically. Computer application programs (“applications”) on running computing devices are used for a variety of purposes, including word processing, accounting, database management, desktop publishing, communications and the like. In addition to application programs, computing devices also have software known as an operating system that controls the operation of the computing device and the various applications and other programs that execute on the computing device. A myriad of different applications, programs, and operating systems may be used on a computing device.
Applications, programs, and operating systems and their component parts (processes, threads, jobs, and the like) consume the memory resources of a computing device. Memory resources, when reserved for the use of a particular program or one of its components, are generally referred to as allocated memory. When a program no longer needs the memory it has been allocated, the allocated memory is supposed to be deallocated, thereby allowing other programs to use the memory. However, deallocation does not always occur. A program's improper failure to deallocate memory is commonly referred to as a memory leak. Memory leaks are difficult to detect because programs operate in complex computing environments that hide the symptoms of a memory leak. Memory leaks often go undetected until all memory resources are consumed or some detectable error caused by a memory leak occurs. It is unfeasible to constantly examine all aspects of a computing device's memory to try to locate allocated memory that is no longer being used. The complexity of current computing environments, and the autonomy of programs and their components, makes such an examination unfeasible. Accordingly, there is a need for a method of detecting memory leaks in computing environments that does not require examining all aspects of a computer's memory. Additionally, there is a need for such a memory leak detection method that does not adversely interfere with the processing and operation of programs on a computing device.
Some previous memory detection methods have involved tracking memory usage and utilizing a low-pass filter to determine if a memory leak is present. The major disadvantage of using only a low-pass filter to examine memory usage data for programs in a computing environment has been a high rate of false positive indications of memory leaks, i.e., an indication of a memory leak where in fact no memory leak is present. Accordingly, there is also a need for a method of detecting memory leaks using memory usage data that does not produce to a high rate of false positive indications of memory leaks.